//////////////////////////////////////////////////////////////////////////

#ifndef _CLIENTINPUTPACKET_H_
#define _CLIENTINPUTPACKET_H_

//////////////////////////////////////////////////////////////////////////

#ifndef _TIMEPACKET_H_
#include "timepacket.h"
#endif

#ifndef _CLIENTINPUT_H_
#include "clientinput.h"
#endif

//////////////////////////////////////////////////////////////////////////


/** Network packet, that contains client input
*
*  @author   Roman Pasechnik
*  @author   Anastasia Karpinska
*  @since    Jun 04th, 2009
*  @updated  Nov 01th, 2009
*/
class ClientInputPacket : public TimePacket
{
//////////////////////////////////////////////////////////////////////////

public:

//////////////////////////////////////////////////////////////////////////


    /** Constructor */
    ClientInputPacket( size_t _creationTime,
                       const ClientInput& _clientInput );


////////////////////////////////////////////////////////////////////////////////


    /** Get client input */
    const ClientInput& GetClientInput() const;


////////////////////////////////////////////////////////////////////////////////

private:

//////////////////////////////////////////////////////////////////////////
//// Serializable interface implementation
//////////////////////////////////////////////////////////////////////////


    /** Accept saver, that serializes the object into buffer */
    virtual void AcceptSaver( Saver& _saver ) const;


//////////////////////////////////////////////////////////////////////////


    /** Client input */
    ClientInput m_ClientInput;


//////////////////////////////////////////////////////////////////////////
};


//////////////////////////////////////////////////////////////////////////

#endif

//////////////////////////////////////////////////////////////////////////
